<?php
/**
 * 随机生成一个数组，可重复或不重复
 * @param  [type]  $min    数组最小值
 * @param  [type]  $max    数组最大值
 * @param  integer $num    生成数量
 * @param  boolean $repeat 是否重复
 * @return [array]         返回数组
 * 时间：20180112
 */

function create_array($min,$max,$num=20,$repeat=false)
{
	$count = 0;
	$array = [];
	while ($count < $num) {
		$number = mt_rand($min,$max);
		$array[] = $number;
		//去除重复
		if (false === $repeat) {
			$array = array_flip(array_flip($array));
		}
		$count = count($array);
		//不能重复，返回的值只能是范围内，元素个数不能再递增，所以直接跳出。
		if (false === $repeat && $count >= $max) {
			break;
		}
	}
    //打乱数组，重建索引。用array_values方法也同样可以做到。
	shuffle($array);
	return $array;
}

/**
 * 创建一个不可重复的数组
 * @param  [type]  $min 最小值
 * @param  [type]  $max 最大值
 * @param  integer $num 元素个数
 * @return [type]       数组格式
 */
function unique_array($min,$max,$num=20)
{
	return create_array($min,$max,$num,false);
}

/**
 * 创建一个可重复的数组
 * @param  [type]  $min 最小值
 * @param  [type]  $max 最大值
 * @param  integer $num 元素个数
 * @return [type]       数组
 */
function reproducible_array($min,$max,$num=20)
{
	return create_array($min,$max,$num,true);
}